package per.turtle.common.core.exception.file;

import lombok.Getter;
import org.apache.commons.fileupload.FileUploadException;

import java.util.Arrays;

/**
 * 文件上传异常类
 *
 * @author turtle
 */
@Getter
public class InvalidExtensionException extends FileUploadException {

    private static final long serialVersionUID = 1L;

    private final String[] allowedExtension;

    private final String extension;

    private final String filename;

    public InvalidExtensionException(String[] allowedExtension, String extension, String filename) {
        super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]");
        this.allowedExtension = allowedExtension;
        this.extension = extension;
        this.filename = filename;
    }

    public static class InvalidImageExtensionException extends InvalidExtensionException {

        private static final long serialVersionUID = 1L;

        public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename) {
            super(allowedExtension, extension, filename);
        }

    }

    public static class InvalidFlashExtensionException extends InvalidExtensionException {

        private static final long serialVersionUID = 1L;

        public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename) {
            super(allowedExtension, extension, filename);
        }

    }

    public static class InvalidMediaExtensionException extends InvalidExtensionException {

        private static final long serialVersionUID = 1L;

        public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename) {
            super(allowedExtension, extension, filename);
        }

    }

    public static class InvalidVideoExtensionException extends InvalidExtensionException {

        private static final long serialVersionUID = 1L;

        public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename) {
            super(allowedExtension, extension, filename);
        }

    }

}
